From: Niklas Laxström Date: Sat, 28 Sep 2013 16:57:23 +0000 (+0000) Subject: Move 'main page as default title' further down to unbreak diff urls X-Git-Tag: 1.31.0-rc.0~18639 X-Git-Url: http://git.cyclocoop.org/%27%20.%20%24prefix%20.%20Wiki::transformTitleToURI%28%24matches%5B1%5D%29%20.%20%27?a=commitdiff_plain;h=3e72e1df6ae03c3262b0cb9ab8cb1d63ae8f8fba;p=lhc%2Fweb%2Fwiklou.git Move 'main page as default title' further down to unbreak diff urls The feature that oldid and diff parameters override the title was not working if wiki's main page is a special page, because that behaviour was excluded for special pages. Hence moved the main page as default title code further down, so that we will hit the no title provided condition for the oldid and diff parameter only links. Bug: 54452 Change-Id: I62cc6e2568a4db988fcf113955ba02710e42a1d2 --- diff --git a/includes/Wiki.php b/includes/Wiki.php index 0683d7c9f9..32c51dbcd9 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -85,8 +85,6 @@ class MediaWiki { } elseif ( $curid ) { // URLs like this are generated by RC, because rc_title isn't always accurate $ret = Title::newFromID( $curid ); - } elseif ( $title == '' && $action != 'delete' ) { - $ret = Title::newMainPage(); } else { $ret = Title::newFromURL( $title ); // Alias NS_MEDIA page URLs to NS_FILE...we only use NS_MEDIA @@ -102,8 +100,12 @@ class MediaWiki { $wgContLang->findVariantLink( $title, $ret ); } } - // For non-special titles, check for implicit titles - if ( is_null( $ret ) || !$ret->isSpecialPage() ) { + + // If title is not provided, always allow oldid and diff to set the title. + // If title is provided, allow oldid and diff to override the title, unless + // we are talking about a special page which might use these parameters for + // other purposes. + if ( $ret === null || !$ret->isSpecialPage() ) { // We can have urls with just ?diff=,?oldid= or even just ?diff= $oldid = $request->getInt( 'oldid' ); $oldid = $oldid ? $oldid : $request->getInt( 'diff' ); @@ -114,6 +116,11 @@ class MediaWiki { } } + // Use the main page as default title if nothing else has been provided + if ( $ret === null && strval( $title ) === '' && $action !== 'delete' ) { + $ret = Title::newMainPage(); + } + if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) { $ret = SpecialPage::getTitleFor( 'Badtitle' ); }